Skip to content
ChangSoo Choi edited this page Jul 7, 2023 · 2 revisions

✔️ 피드페이지

  • 로그인 하지 않을 시 댓글,좋아요,북마크 수를 기준으로 한 추천 목록 제시
  • 로그인 할 시 추천알고리즘에 의한 추천, 구독한 사람의 글 목록, 북마크한 글 목록 제시

💻 code

articles/paginations.py
ai_process/recommend.py
class RecommendView(APIView):
    def get(self, request):
        func_dict = {"0": collaborative_filtering, "1": content_base}
        # 비로그인 시
        if request.user.is_anonymous:
            articles = (
                Article.objects.annotate(
                    score=Count("comment") + Count("like") * 3 + Count("bookmark") * 4
                )
                .filter(score__gt=0)
                .order_by("-score")
            )
            articles = articles[:10]
        # 로그인 시
        else:
            select = request.GET.get("recommend", "0")
            list_of_pk, dictionary = func_dict[select](request.user.id)
            articles = sorted(
                Article.objects.filter(id__in=list_of_pk),
                key=lambda x: dictionary[x.id],
                reverse=True,
            )
        serializer = ArticleListSerializer(
            articles, many=True, context={"request": request}
        )
        return Response(serializer.data, status=status.HTTP_200_OK)
📷 View
Image
Clone this wiki locally